package com.saodisheng.service;

import com.jfinal.kit.Ret;
import com.saodisheng.model.User;

/**
 *
 * @author 扫地生_saodisheng
 * @date 2022/1/28
 */
public interface LoginService {
	Ret login(String userName, String password, boolean keepLogin, String loginIp);
	
	User getLoginAccountWithSessionId(String sessionId);

	/**
	 * 通过 sessionId 获取登录用户信息
	 * sessoin表结构：session(id, accountId, expireAt)
	 *
	 * 1：先从缓存里面取，如果取到则返回该值，如果没取到则从数据库里面取
	 * 2：在数据库里面取，如果取到了，则检测是否已过期，如果过期则清除记录，
	 *     如果没过期则先放缓存一份，然后再返回
	 */
	User loginWithSessionId(String sessionId, String loginIp);
	

	/**
	 * 发送密码找回授权邮件
	 */
	Ret sendRetrievePasswordAuthEmail(String email);

	/**
	 * 找回密码
	 */
	Ret retrievePassword(String authCodeId, String newPassword);

	/**
	 * 退出登录
	 */
	void logout(String sessionId);

	/**
	 * 从数据库重新加载登录账户信息
	 */
	void reloadLoginAccount(User loginAccountOld);
}
